package com.xiaoshuidi.cloud.module.finance.service.finance;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.finance.api.finance.dto.BankTransferReqDTO;
import com.xiaoshuidi.cloud.module.finance.controller.admin.finance.vo.transfer.FinanceBankTransferPageReqVO;
import com.xiaoshuidi.cloud.module.finance.controller.admin.finance.vo.transfer.FinanceBankTransferPageResult;
import com.xiaoshuidi.cloud.module.finance.controller.admin.finance.vo.transfer.FinanceBankTransferReqVO;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.finance.FinanceBankTransferDO;

import java.util.List;

public interface FinanceBankTransferService {
    Integer save(BankTransferReqDTO reqDTO);

    Integer save(FinanceBankTransferReqVO reqVO);

    PageResult<FinanceBankTransferDO> getPage(FinanceBankTransferPageReqVO reqVO);

    FinanceBankTransferPageResult getFinanceBankTransferSummary(FinanceBankTransferPageReqVO reqVO);

    void update(Integer id, FinanceBankTransferReqVO reqVO);
    void payment(Integer id, FinanceBankTransferReqVO reqVO);

    FinanceBankTransferDO getById(Integer id);

    FinanceBankTransferDO getByBizNoAndBizType(String bizNo, String bizType);

    void saveBatch(List<BankTransferReqDTO> reqDTO);

    void send(String number);

    FinanceBankTransferDO getByNumber(String number);

    void paySuccess(FinanceBankTransferDO financeBankTransferDO, String tradeSerialNo);


    /**
     * 批量付款
     *
     * @param ids
     */
    long paymentBatch(List<Long> ids);

    void payFailure(FinanceBankTransferDO financeBankTransferDO);

    /**
     * 记录导出次数
     *
     * @param ids
     */
    void updateExportCount(List<Integer> ids);

    List<FinanceBankTransferDO> selectIds(List<Integer> ids);
}
